// let [a,b]=[1,2]
// console.log(a,b);


// let [a,b,[c,d]]=[1,2,[3,4]]
// console.log(a,b,c,d);

// let [a,b,[c]]=[1,2,[3,4]]
// console.log(a,b,c);

// let [a,b,c]=[1,2,[3,4]]
// console.log(a,b,c);

// let [a,b,c,d]=[1,2,[3,4]]
// console.log(a,b,c,d); //1 2 (2) [3, 4] undefined

//  let [a,b,c,d=5]=[1,2,[3,4]]
//  console.log(a,b,c,d); //1 2 (2) [3, 4] 5

//  let [a,b,c,d=5]=[1,2,[3,4],6]
//  console.log(a,b,c,d); //1 2 (2) [3, 4] 6 惰性的如果传递就用传递的，不传递就用默认的

// let user = {
//     name: 'zsb',
//     age: 23
// }
// let { name, age } = user
// console.log(name, age);

// let user = {
//     name: 'zsb',
//     age: 23
// }
// let { name:name1, age:age1 } = user
// console.log(name1, age1);

// let [a,b,c]='zsb'
// console.log(a,b,c);

// function foo() {
//     console.log(123);
// }
// let [a = foo()] = [1] //由于惰性 不会输出 因为没有执行foo() ,已经被赋值为1了

// function foo() {
//     console.log(123);
// }
// let [a = foo()] = [] //没有赋值就取默认值 所以执行 输出123

// 参数的解构赋值
// function foo([a,b,c]){
// console.log(a,b,c);//1 2 3
// }
// let arr=[1,2,3]
// foo(arr)

// function foo({name, age}) {
//     console.log(name, age);//'zz' 1
// }
// let a = {
//     age: 1,
//     name: 'zz'
// }
// foo(a)

// function foo({name, age,school='cc'}) {
//     console.log(name, age,school);// zz 1 cc
// }
// let a = {
//     age: 1,
//     name: 'zz'
// }
// foo(a)

// function foo(){
//     let obj = {
//         age: 1,
//         name: 'zz'
//     }
//     return obj
// }
// let {age,name}=foo()
// console.log(age,name);//1 'zz'

// // json形式解构
// let json='{"a":"123","b":"zzz"}'
// let {a,b}=JSON.parse(json)
// console.log(a,b);//123 zzz



